iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0

由於我們的Linebot是跑在AWS Lambda上的,而Lambda是無狀態的serverless服務,當Lambda被觸發後,只要經過一段時間的閒置,虛擬機就會被關閉,也就是說沒有辦法在Lambda上面長期存儲資料,所以我們將可能需要儲存的放到DynamoDB裡面。

Cloud

  1. 首先還是要讓Lambda有權限去調用DynamoDB,我們一樣點進我們創好的Lambda,從組態的許可下,能看見執行角色,按進去新增權限

    https://ithelp.ithome.com.tw/upload/images/20230923/20115990MjefFKfHnr.png

  2. 輸入DynamoDB搜尋,找到AmazonDynamoDBFullAccess打勾後新增權限,這樣就可以了

    https://ithelp.ithome.com.tw/upload/images/20230923/201159908bWcYpgadV.png

Local

但我們不可能每次本機端測試的時候,都連線到AWS去操作DynamoDB,因此需要一個離線版本的架在自己的電腦上,AWS提供了一些方法,這邊我們選擇使用比較平易近人的docker-compose的方式直接拉起來。

  1. 以下就可以建立一個簡單跑在8000port的Local Dynamodb了

    version: "3.8"
    services:
      dynamodb-local:
        command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
        image: "amazon/dynamodb-local:latest"
        container_name: dynamodb-local
        ports:
          - "8000:8000"
        volumes:
          - "./docker/dynamodb:/home/dynamodblocal/data"
        working_dir: /home/dynamodblocal
    
  2. 但是由於這是純的dynamodb,所以並不像在AWS上那樣有GUI可以操作,為了方便開發的時候能看一下資料,我們使用這個開源專案所提供的GUI,接著讓我們更新一下docker-compose.yaml

    version: "3.8"
    services:
      dynamodb-local:
        command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
        image: "amazon/dynamodb-local:latest"
        container_name: dynamodb-local
        ports:
          - "8000:8000"
        volumes:
          - "./docker/dynamodb:/home/dynamodblocal/data"
        working_dir: /home/dynamodblocal
      dynamodb-admin:
        image: aaronshaf/dynamodb-admin
        ports:
          - "8001:8001"
        environment:
          DYNAMO_ENDPOINT: "http://dynamodb-local:8000"
          AWS_REGION: "ap-northeast-1"
          AWS_ACCESS_KEY_ID: dummy
          AWS_SECRET_ACCESS_KEY: dummy
        depends_on:
          - dynamodb-local
    

    補上dynamodb-admin,讓環境變數中的DYNAMO_ENDPOINT指定到dynamodb的服務,也就是dynamodb-local的8000port,這樣就沒問題了

  3. 接著docker-compose up -d後,打開http://localhost:8001/ ,就可以看到GUI了~
    https://ithelp.ithome.com.tw/upload/images/20230923/20115990KNUzXuSFLv.png

到此DynamoDB的設定就都好了,我們明天寫點code來測試看看,那我們明天見~


上一篇
Day07 來點不一樣的Ngork
下一篇
Day09 串接DynamoDB-02
系列文
Golang LineBot X GoogleDrive:LINE有各種限制!? 那就丟上Drive吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言